包名 net.yzjlb.sai.searchlist

//带搜索框的普通列表框
@导入Java("android.view.View")
类 搜索列表框 : 可视化组件
	
	@输出名("layout")
	变量 layout : 搜索列表布局?
	变量 数据集 : 集合
	变量 数据集_过滤 : 集合
	变量 搜索文本 : 文本
	
	@code
    public #<搜索列表框>(android.content.Context context) {
        super(context);
		this.view = onCreateView(context);
		this.view.setTag(this);
		#初始化();
    }
	
	@Override
    public View onCreateView(android.content.Context context) {
        layout = new #<搜索列表布局>(context);
		view = layout.getLayout().getView();
        return view;
    }

    @Override
    public View getView() {
        return view;
    }
    @end
	
	方法 初始化()
		订阅事件()
	结束 方法
	
	事件 layout:搜索_内容被改变()
		搜索文本 = 取搜索框().内容
		取数据集合()
		通知_更新数据()
	结束 事件

	事件 layout:列表_项目被单击(被单击组件 : 可视化组件,索引 : 整数)
		项目被单击(被单击组件, 索引)
	结束 事件

	事件 layout:列表_加载布局(索引 : 整数,项目布局 : 组件容器) : 组件容器
		返回 加载布局(索引, 项目布局)
	结束 事件
	
	属性读 搜索框在下方() : 逻辑型
		返回 layout.搜索框2_父.可视
	结束 属性
	
	属性写 搜索框在下方(下方 : 逻辑型)
		layout.搜索框_父.可视 = (下方==假)
		layout.搜索框2_父.可视 = 下方
	结束 属性
	
	//取数据集合
	方法 取数据集合() : 集合
		变量 i : 整数
		数据集_过滤.清空()
		循环(i, 0, 数据集.长度)
			如果 是否包含内容(i, 搜索文本) 则
				数据集_过滤.添加成员(数据集.取成员(i))
			结束 如果
		结束 循环
		返回 数据集_过滤
	结束 方法
	
	//同：自定义列表
	方法 加载数据集(数据 : 集合)
		数据集 = 数据
		取数据集合()
		取组件容器().数据框.加载数据集(数据集_过滤)
	结束 方法
	
	//同：自定义列表
	方法 通知_更新数据()
		取组件容器().数据框.通知_更新数据()
	结束 方法
	
	//搜索框提示文字
	属性写 提示文字(提示 : 文本)
		取搜索框().提示文本 = 提示
	结束 属性
	
	//取自定义列表
	方法 取列表框() : 自定义列表框
		返回 取组件容器().数据框
	结束 方法
	
	//取搜索框
	方法 取搜索框() : 编辑框
		如果 搜索框在下方() 则
			返回 取组件容器().搜索框2
		否则
			返回 取组件容器().搜索框
		结束 如果
	结束 方法
	
	//取根部局
	方法 取组件容器() : 搜索列表布局
		返回 layout;
	结束 方法
	
	//搜索时回调，用户自己实现当前索引下数据是否包含搜索文字，实现搜索效果
	定义事件 是否包含内容(索引 : 整数, 搜索 : 文本) : 逻辑型
	
	//同：自定义列表框
	//注意这里用集合数据的话，请调用，取数据集合()获取最新的数据
	定义事件 加载布局(索引 : 整数,项目布局 : 组件容器) : 组件容器
	
	//同：自定义列表框
	//注意这里用集合数据的话，请调用，取数据集合()获取最新的数据
	定义事件 项目被单击(被单击组件 : 可视化组件,索引 : 整数)
结束 类


类 搜索列表布局 : 组件容器

	@布局配置([[根布局=真,宽度=-1,高度=-1,纵向布局=真]])
	变量 线性布局1 : 线性布局
	@布局配置([[父布局=线性布局1,圆角=10,卡片阴影=10,@外边距=10]])
	变量 搜索框_父 : 卡片布局
	@布局配置([[父布局=搜索框_父,宽度=-1,背景颜色=-1,内边距=30,提示文本="搜索",内容="",单行输入=真]])
	变量 搜索框 : 编辑框
	@布局配置([[父布局=线性布局1,@外边距=10,圆角=10,卡片阴影=10,宽度=-1,高度=-1,@权重=1.0]])
	变量 卡片布局3 : 卡片布局
	@布局配置([[父布局=卡片布局3,宽度=-1,高度=-1,纵向布局=真]])
	变量 线性布局5 : 线性布局
	@布局配置([[父布局=线性布局5,宽度=-1,高度=-1,@外边距=10]])
	变量 数据框 : 自定义列表框
	@布局配置([[父布局=线性布局1,圆角=10,卡片阴影=10,@外边距=10,可视=假]])
	变量 搜索框2_父 : 卡片布局
	@布局配置([[父布局=搜索框2_父,宽度=-1,背景颜色=-1,内边距=30,提示文本="搜索",内容="",单行输入=真]])
	变量 搜索框2 : 编辑框

	事件 搜索列表布局:创建完毕()
		订阅事件()
		
	结束 事件
	
	事件 数据框:加载布局(索引 : 整数,项目布局 : 组件容器) : 组件容器
		返回 列表_加载布局(索引, 项目布局)
	结束 事件

	事件 数据框:项目被单击(被单击组件 : 可视化组件,索引 : 整数)
		列表_项目被单击(被单击组件, 索引)
	结束 事件

	事件 搜索框:内容被改变()
		搜索_内容被改变()
	结束 事件

	事件 搜索框2:内容被改变()
		搜索_内容被改变()
	结束 事件
	
	定义事件 搜索_内容被改变()
	定义事件 列表_项目被单击(被单击组件 : 可视化组件,索引 : 整数)
	定义事件 列表_加载布局(索引 : 整数,项目布局 : 组件容器) : 组件容器
		
结束 类